#ifndef __LEX_H_
#define __LEX_H_

// 标记的枚举定义
// token.h:
//   TOKEN(TK_STRUCT, "struct")
//   TOKEN(TK_ID, "identifier")
//   TOKEN(TK_SEMICOLON, ";")
enum {
    TK_BEGIN = 0,
#define TOKEN(k, s) k,
#include "token.h"
#undef  TOKEN
};

extern int          Token;
extern const char*  TokenStart;
extern int          TokenLen;
extern int          TokenLine;
extern int          TokenColumn;
extern const char*  TokenStrings[];

void ScanParen(void);
void ScanBrace(void);
void InitLexer(void);
void NextToken(void);
void Expect(int tk);

#endif
